import { Row } from './row';
import { WholeCol } from './whole-col';
import { Cell } from './cell';

export interface ICellInfo {
    row: number,
    col: number,
    cell: Cell
}
export interface ITableDatasPureData {
    rows: Row[];
    cols: WholeCol[];
}
export interface ITableDatas extends ITableDatasPureData{
    rowIsExist(row: number):boolean;
    cellIsExist(row: number, col: number):boolean;
    getCell(row: number, col: number, resEmptyCell: boolean): Cell|null;
    getCellType(row: number, col: number): any;
    getRowHeight(row: number): number;
    getColWidth(col: number): number;
    getWholeCol(col: number): WholeCol;
    setWholeCol(colData: WholeCol, col: number):void;
    hasRow(row: number):boolean;
    getRow(row: number): Row;
    setRow(rowInstance: Row, row: number):void;
    getFullCols(col: number): ICellInfo[];
    getFullRows(row: number): ICellInfo[];
    setCell(row: number, col: number, cell: Cell): void;
    setCellValue(row: number, col: number, value: BaseValueType):void;
    clearData(row: number, col: number): void;
    getMaxRow():number;
    getMaxCol(boundary?: {start: number, end: number}): number;
    deleteRows(rows: number[]): any[];
    deleteCols(cols: number[]): any[];
}